<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>使用类注意事项</title>
</head>

<body>
    <button>点击</button>
    <script>
        var that;
        var _that;
        class Star {
            constructor(uname, age) {
                // constructor 里面的this指向的是 创建的实例对象
                that = this
                console.log("constructor this 是创建的实例对象:" + this);
                this.uname = uname
                this.age = age

                // this.sing()
                this.btn = document.querySelector('button')
                this.btn.onclick = this.sing;
            }
            sing() {
                // 
                console.log("sing() 方法里的this 指向这个btn按钮，因为这个按钮调用了这个函数：" + this);
            }
            dance() {
                // 这个dance里的this指向的是实例对象ldh,因为ldh调用了这个函数
                _that = this
                console.log(this);
            }
        }
        var ldh = new Star()
        console.log('构造方法中的this 和 ldh相等：', that === ldh);
        ldh.dance();
        console.log('dance中的this 和 ldh相等：', _that === ldh);


        // 1. 在es6中没有变量提升，所以必须先定义类，才能通过类实例化对象
        // 2. 类中共有的属性和方法，一定要加this使用
    </script>
</body>

</html>